From: Matthias Clasen Date: Tue, 11 Oct 2022 02:36:35 +0000 (-0400) Subject: filechooserwidget: Reinstate show_and_select_files X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~143^2~25 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi///%22http:/www.example.com/cgi/?a=commitdiff_plain;h=3a7d0945420389caebdfbe6f21a8a2662ceae147;p=gtk4.git filechooserwidget: Reinstate show_and_select_files Now that we have information about visible and filtered-out status of items, we can make this function work again. --- diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index 774258239b..3120d9e320 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -3599,6 +3599,7 @@ show_and_select_files (GtkFileChooserWidget *impl, GFileInfo *info; GFile *file; guint i; + gboolean enabled_hidden, removed_filters; file = walk->data; @@ -3608,16 +3609,11 @@ show_and_select_files (GtkFileChooserWidget *impl, if (!info) continue; - /* TODO: Reimplement showing hidden files and removing filters */ -#if 0 - gboolean enabled_hidden, removed_filters; - enabled_hidden = impl->show_hidden; removed_filters = (impl->current_filter == NULL); - if (!_gtk_file_system_item_is_visible (item)) + if (!g_file_info_get_attribute_boolean (info, "filechooser::visible")) { - GFileInfo *info = _gtk_file_system_item_get_file_info (item); if (!enabled_hidden && (g_file_info_get_is_hidden (info) || g_file_info_get_is_backup (info))) @@ -3629,11 +3625,7 @@ show_and_select_files (GtkFileChooserWidget *impl, /* Is it a filtered file? */ - item = _gtk_file_system_model_get_item_for_file (fsmodel, file); - if (!item) - continue; /* re-get the iter as it may change when the model refilters */ - - if (!_gtk_file_system_item_is_visible (item)) + if (g_file_info_get_attribute_boolean (info, "filechooser::filtered-out")) { /* Maybe we should have a way to ask the fsmodel if it had filtered a file */ if (!removed_filters) @@ -3643,12 +3635,6 @@ show_and_select_files (GtkFileChooserWidget *impl, } } - /* Okay, can we select the file now? */ - item = _gtk_file_system_model_get_info_for_file (fsmodel, file); - if (!item) - continue; -#endif - /* TODO: "accidentally" quadratic! */ for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (impl->selection_model)); i++) @@ -3659,15 +3645,13 @@ show_and_select_files (GtkFileChooserWidget *impl, if (info2 == info) { - gtk_selection_model_select_item (impl->selection_model, - i, - FALSE); - g_clear_object (&info); + gtk_selection_model_select_item (impl->selection_model, i, FALSE); + g_clear_object (&info2); selected_a_file = TRUE; break; } - g_clear_object (&info); + g_clear_object (&info2); } }